package com.qf.controller;

import com.qf.pojo.User;
import org.springframework.format.annotation.DateTimeFormat;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;


import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 *
 * @Controller：控制器
 * @RequestMapping("/test")（类，方法注解）：请求映射路径
 *      可以用在方法上，也能用在类上，请求时路径应该是类上路径+方法上路径
 *      可接收get和post请求
 *      method = RequestMethod.GET 只能接收post请求，相当于注解@PostMapping
 *      method = RequestMethod.POST 只能接收post请求，相当于注解@PostMapping
 * @RequestParam:绑定参数
 *      name:指定前端的名称
 *      required:默认为true，表示必须传此参数 false 可以不传此参数
 *      defaultValue ： 默认值
 *  springMVC中默认是请求转发
 *  重定向： redirect
 *  请求转发： forword
 * 注意： 如果写了redirect，forword关键字，则视图解析器不会添加前缀和后缀
 *
 * 响应数据
 *  请求域存储数据
 *      ModelMap，Model 可以手动new， 也可以写到处理器的参数,可以再请求域存储数据
 *
 *      ModelAndView 模型和视图对象,可以手动new， 也可以写到处理器的参数,可以再请求域存储数据，也能指定视图页面
 * @author YDW
 * projectName:project2202_3
 * time:2022/5/7 10:17
 * description:
 */
@Controller
@SessionAttributes(names = {"username","sex","age"})
//@RequestMapping("/test")
public class TestController {

//    @RequestMapping(value = "/param01",method = RequestMethod.GET)
    @PostMapping("/param01")
    public String param01(@RequestParam(name="uid",required = false,defaultValue = "1") Integer id, String name, boolean flag, char sex){
        System.out.println("id:"+id);
        System.out.println("name:"+name);
        System.out.println("flag:"+flag);
        System.out.println("sex:"+sex);
        return "success";
    }

    @RequestMapping("/param02")
    public String param02(User user, ModelMap map, Model model){
//        model.addAttribute("","");
        map.put("username","张三");
//        System.out.println("id:"+user.getId());
//        System.out.println("name:"+user.getName());
//        System.out.println("flag:"+user.isFlag());
//        System.out.println("sex:"+user.getSex());
        return "redirect:/success.jsp";
    }
    @RequestMapping("/param03")
    public String param03(@DateTimeFormat(pattern = "yyyy-MM-dd") Date birthday){
        System.out.println("birthday:"+birthday);
        return "success";
    }
    @RequestMapping("/param04")
    public String param04(String[] args){
        System.out.println("字符串数组"+ Arrays.toString(args));
        return "success";
    }
    @RequestMapping("/param05")
    public String param05(@RequestParam("args") List<String> args){
        System.out.println("List集合"+ args);
        return "success";
    }

    @RequestMapping("/param06")
    public ModelAndView param06(ModelAndView modelAndView){
        //添加数据到请求域
        modelAndView.addObject("username","张三");
        modelAndView.addObject("sex","男");
        modelAndView.addObject("age","18");
        //指定视图页面
        modelAndView.setViewName("redirect:/success.jsp");
        return modelAndView;
    }
}
